/** @type {import('vite').UserConfig} */
import { defineConfig } from 'vite'
import postceePresetEnv from 'postcss-preset-env'
export default (env: any) => defineConfig({
  build: {
    // 最终构建的浏览器兼容目标，类型：string | string[]
    target: '',
    //指定输出路径
    outDir: env.VITE_APP_NAME,
    //生成静态资源的存放路径
    assetsDir: "assets",
    //小于此阈值的导入或引用资源将内联为 base64 编码，以避免额外的 http 请求。设置为 0 可以完全禁用此项
    assetsInlineLimit: 4096,
    //启用/禁用 CSS 代码拆分，如果指定了 build.lib，build.cssCodeSplit 会默认为 false
    cssCodeSplit: true,
    //构建后是否生成 source map 文件, boolean | 'inline' | 'hidden'
    sourcemap: false,
    //自定义底层的 Rollup 打包配置
    rollupOptions: {
      output: {
        chunkFileNames: 'js/[name]-[hash].js', // 引入文件名的名称
        entryFileNames: 'js/[name]-[hash].js', // 包的入口文件名称
        assetFileNames: '[ext]/[name]-[hash].[ext]', // 资源文件像 字体，图片等
        manualChunks(id: string | string[]) {
          if (id.includes('node_modules')) {
            return id.toString().split('node_modules/')[1].split('/')[0].toString();
          }
        }
      }
    },
    minify: 'terser', // 启用 terser 压缩  
    terserOptions: {
      compress: {
        // pure_funcs: ['console.log'], // 只删除 console.log  
        drop_console: true, // 删除所有 console
        drop_debugger: true, // 删除 debugger  
      },
      output: {
        comments: true, // 删除所有注释
      },
    }
  },
  css: {
    modules: {
      localsConvention: 'camelCase',//中划线-
      scopeBehaviour: 'local',//开启模块化
      generateScopedName: '[name]_[local]_[hash:5]'//命名规则
    },
    postcss: {// 内联的 PostCSS 配置 如果提供了该内联配置，Vite 将不会搜索其他 PostCSS 配置源
      plugins: [postceePresetEnv()]
    },
    preprocessorOptions: { // css的预处理器选项
      scss: {
        additionalData: `$injectedColor: orange;@import "@/assets/style/variables.scss";`
      }
    },
    devSourcemap: false
  },
})